package de.fhin.mas.agents.searcher.behaviours;

import jade.core.Agent;
import jade.core.behaviours.TickerBehaviour;
import jade.domain.FIPAException;

import java.util.logging.Level;

import de.fhin.mas.MASServices;
import de.fhin.mas.agents.searcher.SearcherAgent;

/**
 * Dieses <tt>Behaviour</tt> erweitert den <tt>SearcherAgent</tt> um die Findung
 * der anderen Services auf der Plattform.
 * 
 * @author Andreas Schmidl
 */
public class UpdateServices extends TickerBehaviour {

	/** Die eindeutige ID zur Serialisierung ueber das Netzwerk. */
	private static final long serialVersionUID = 2863955447246964253L;

	/**
	 * Erzeugt eine neue Instanz des <tt>UpdateServices</tt>-Behaviours.
	 * 
	 * @param parentAgent
	 *            Der Sucher-Agent, zu dem das Behaviour gehören soll.
	 */
	public UpdateServices(Agent parentAgent) {
		super(parentAgent, 2500);
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	protected void onTick() {
		try {
			SearcherAgent searcherAgent = (SearcherAgent) myAgent;
			searcherAgent.setManager(MASServices.findService(searcherAgent,
					MASServices.MANAGER));
			searcherAgent.setNavigator(MASServices.findService(searcherAgent,
					MASServices.NAVIGATOR));
			searcherAgent.setGripper(MASServices.findService(searcherAgent,
					MASServices.GRIPPER));
		} catch (FIPAException e) {
			((SearcherAgent) myAgent)
					.getLogger()
					.log(
							Level.SEVERE,
							"UpdateServices: Beim Dursuchen der Agentenplattform nach Services trat eine Exception auf:\n"
									+ e.toString());
		}
	}
}
